package pl.edu.agh.ki.neuralnetwork.neurons;

import java.util.List;

import pl.edu.agh.ki.neuralnetwork.exceptions.NeuronAlreadyConnectedException;
import pl.edu.agh.ki.neuralnetwork.exceptions.NeuronNotConnectedException;

public interface InnerNeuron extends Neuron {
	/**
	 * Add input connection
	 * @param neuron
	 * @param weight 
	 * @throws NeuronAlreadyConnectedException
	 */
    public void addInput(Neuron neuron, double weight) throws NeuronAlreadyConnectedException;
    
    public void setPrevBias(double bias);
    public Double getPrevBias();
    public void setBias(double bias);
    public Double getBias();
    public void setPrevWeight(Neuron neuron, double weight) throws NeuronNotConnectedException;
    public double getPrevWeight(Neuron neuron) throws NeuronNotConnectedException;
    public void setWeight(Neuron neuron, double weight) throws NeuronNotConnectedException;
    public double getWeight(Neuron neuron) throws NeuronNotConnectedException;
    public void setError(Double error);
    public Double getError();
    public Double getSum();
    public List<Double> getWeights();
    public List<Neuron> getInputNeurons();
    public void setBiasN(Bias bias, double d);
    public Bias getBiasN();
    public boolean isBias();
}